The present disclosure relates to performance of computing systems, and more specifically, to a system and method for the placement and management of actual and virtual machines in modern computing environments containing virtualization hosts, including cloud computing environments. The term “cloud computing environment” is used to represent all computing environments.
A cloud computing environment provides a set of services through use of one or more data centers accessible by a set of clients usually via a network such as the Internet. A data center includes a collection of computer clusters, storage subsystems and other components connected by a computer network. In a virtualization environment, each host in a computer cluster provides a set of physical resources such as CPUs, memory, disks and network interface cards (NICS) and runs a virtual machine monitor (VMM) that emulates a set of virtual machines. Each virtual machine is configured with a set of virtual resources such as virtual CPUs (VCPUs) and memory.
In a cloud computing environment, appropriate assignment of virtual machines to hosts and configuration of virtual machines, hosts, resource pools and computer clusters affects performance, service agreements and resource availability. Assignment of virtual machines to differing hosts is often required to provide optimum load balancing and manage infrastructure costs. The size, complexity and rate of change of resource consumption makes assignment of virtual machines to hosts difficult and time consuming. So, an automated process for optimizing assignment is required.
Appropriate placement of virtual machines is related to a classical bin packing problem, in that resources consumed by each virtual machine must be “packed” into the corresponding resource “bin” on a host. Each virtual machine when deployed on a host consumes a portion of the host's resource capacity as a function of its configuration and workload. Thus, in the virtual machine placement problem (1) each virtual machine presents a different “size” (resource consumption) over time (2) the host resource bin sizes (resource capacities) vary from placement to placement and (3) the set of resource consumptions by each virtual machine may be assigned to only one host.